package com.atguigu.democustomer230301.controller;

import com.atguigu.democustomer230301.bean.Customer;
import com.atguigu.democustomer230301.service.CustomerService;
import com.atguigu.democustomer230301.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

@RestController//标识这个类为Controller层
public class CustomerController {

    @Autowired
//    @Qualifier("s1")
    private CustomerService customerService;

    //用来接受请求根据请求名 来确定由哪个方法处理
    //@RequestMapping默认可以接收所有类型的请求
    //也可以通过第二个参数来决定接收什么类型的请求 比如：
    // @RequestMapping(value = "hello",method = RequestMethod.GET)
    @RequestMapping(value = "hello")
    public String sayHello() {
        String result = customerService.sayHello();
//        System.out.println("111111");
//        return "Hello SZ";
        return result;
    }

    //只负责接受Get请求
    @GetMapping("/customerByName")
    public String customerByName(
            //这个注解主要用来接受路径上的键值对参数 通过名字来确定接收到的参数给到哪个形参接收
            @RequestParam("name") String n) {
//        System.out.println("2222222");
        String result = customerService.getCustomerByName(n);
        return result;
    }

    //接受路径上非kv的参数 比如：http://localhost:8080/customerById/1
    //要通过{}来给这个参数起个名字
    @GetMapping("customerById/{id}")
    public String customerById(
            //专门负责接受非kv路径上的参数 根据请求名中给变量起的名字来决定交给哪个参数接收
            @PathVariable("id") String id) {
//        System.out.println("333333");
        String result = customerService.getCustomerById(id);
        return result;
    }

    //    @RequestMapping(value = "",method = RequestMethod.POST)
    //@PostMapping("save")主要用来接受post请求 通过括号中的请求名来确定交给哪个方法来处理
    @PostMapping("/save")
    public String saveCustomer(
            //用来接受请求体参数  如果请求体是json字符串的话可以自动映射到bean上面
            @RequestBody Customer customer) {
        System.out.println("参数" + customer);
//        customerService.saveCustomer(customer);
        customerService.saveCustomer(customer);
        return "success";
    }
}

